CodeMirror.defineMode("vbscript", function () {
    var regexVBScriptKeyword = /^(?:Call|Case|CDate|Clear|CInt|CLng|Const|CStr|Description|Dim|Do|Each|Else|ElseIf|End|Err|Error|Exit|False|For|Function|If|LCase|Loop|LTrim|Next|Nothing|Now|Number|On|Preserve|Quit|ReDim|Resume|RTrim|Select|Set|Sub|Then|To|Trim|True|UBound|UCase|Until|VbCr|VbCrLf|VbLf|VbTab)$/im;

    return {
        token: function (stream) {
            if (stream.eatSpace()) return null;
            var ch = stream.next();
            if (ch == "'") {
                stream.skipToEnd();
                return "comment";
            }
            if (ch == '"') {
                stream.skipTo('"');
                return "string";
            }

            if (/\w/.test(ch)) {
                stream.eatWhile(/\w/);
                if (regexVBScriptKeyword.test(stream.current())) return "keyword";
            }
            return null;
        }
    };
});

CodeMirror.defineMIME("text/vbscript", "vbscript");
